/**
 * com.cnhis.his.customer.dao.Abj1Dao.java
 */
package com.mbmed.doctor.homepage.dao;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.mbmed.doctor.commons.dao.BaseDao;
import com.mbmed.doctor.commons.utils.BaseVO;
import com.mbmed.doctor.commons.utils.Page;
import com.mbmed.doctor.commons.utils.Utils;
import com.mbmed.doctor.homepage.mapper.Abj1;

/**
 * @file  Abj1Dao.java
 * @author 刘武
 * @version 0.1
 * @todo	Abj1数据操作类
 * Copyright(C), 2013-2014
 *		  Shenzhen Coordinates Software Development Co., Ltd.
 * History
 *   	1. Date: 2014-11-24 02:50:51
 *      	Author: 刘武
 *      	Modification: this file was created
 *   	2. ...
 */
@Repository
public class Abj1Dao extends BaseDao {
	/**
	 * 生成一个主键
	 * @return
	 * @throws Exception
	 */
	public String getPKValue() throws Exception{
		return Utils.getUUID();
	}
	

	public Page queryByParams(String sqlDef, Map params, int currPage,
			int pageSize) throws Exception {

		return this.queryForPage(sqlDef, params, currPage, pageSize);

	}
	
	
	public Page queryByParams(Map params, int currPage,
			int pageSize) throws Exception {

		return this.queryForPage("ABJ1.selectByParams", params, currPage, pageSize);

	}
	
    /**
     * 配置文件中编号：(1)
	 * 对数据库进行查询并返回一个VO数组
	 * @return type : List 返回查询操作所有符合条件的记录的VO对象集合，操作失败返回null
	 * @throws Exception
	 */
	@SuppressWarnings({ "rawtypes" })
	public List selectAll() throws Exception {
		return queryForList("ABJ1.selectAll", null);
	}
	
	/**
	 * 配置文件中编号：(2)
     * 在本方法中组装出一个Map{[数据库列名:值],[数据库列名:值]}对象调用myBatis相关方法
	 * @param valueOne 需要进行查询的值。
	 * @param valueTwo 需要进行查询的值。
	 * @param valueThree 需要进行查询的值。
	 * @return type : List 返回查询操作所有符合条件的记录的VO对象集合，操作失败返回null
	 * @throws Exception
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public List selectByParamMap(Map paramMap) throws Exception {

	    return getSqlSession().selectList("ABJ1.selectByParams", paramMap);
	}
	
	/**
	 * 配置文件中编号：(3)
	 * 搜索数据库中所有与对象对应的记录
	 * @param vo 对象对应到数据库中的一条记录
	 * @return type : List 返回查询操作所有符合条件的记录的VO对象集合，操作失败返回null
	 * @throws Exception
	 */
	@SuppressWarnings("rawtypes")
	public List selectByVo(Abj1 vo) throws Exception {
	    if(vo == null) return null;
	    return queryForList("ABJ1.selectByVO", vo);
	}
	
    /**
     * 配置文件中编号：(3-2)
     * 实现翻页
     * @param condition condition{Vo:条件VO对象，curPage:当前页面数，pageSize:每页最大行数}
     * @return type : Page 返回一个分页的List，操作失败返回null
	 * @throws Exception
     */
    public Page selectForPage(@SuppressWarnings("rawtypes") Map condition) throws Exception {
        if(condition == null) return null;
        int pageIndex = ((Integer) condition.get("curPage")).intValue();
        int perPageSize = ((Integer) condition.get("pageSize")).intValue();
        String sqlStr = "";
        Object vo =  condition.get("Vo");
        if(vo == null) {
        	sqlStr = "ABJ1.selectAll";
        }else {
        	sqlStr = "ABJ1.selectByVO";
        }
        return queryForPage(sqlStr , vo, pageIndex, perPageSize);
    }
    
        /**
     * 配置文件中编号：(3-3)
     * 实现翻页
     * @param {Vo:条件VO对象，curPage:当前页面数，pageSize:每页最大行数}
     * @return type : Page 返回一个分页的List，操作失败返回null
	 * @throws Exception
     */
    public Page selectForPage(Abj1 vo, int pageIndex, int perPageSize) throws Exception {
        String sqlStr = "";
        if(vo == null) {
        	sqlStr = "ABJ1.selectAll";
        }else {
        	sqlStr = "ABJ1.selectByVO";
        }
        return queryForPage(sqlStr , vo, pageIndex, perPageSize);
    }
    
    /**
     * 配置文件中编号：(3-3)
     * 搜索数据库中与传入的主键对应的记录
     * @param pkid 与数据库主键对应
     * @return type : RpDir 返回查询操作所有符合条件的记录的VO对象集合，操作失败返回null
	 * @throws Exception
     */
    public Abj1 selectByPk(String pkid) throws Exception {
    	if(pkid ==null) return null;
    	return (Abj1)getSqlSession().selectOne("ABJ1.selectByPk", pkid);
    }
    
	/**
	 * 配置文件中编号：(4)
	 * 向数据库中插入一个VO对象
	 * @param vo 对象对应到数据库中的一条记录
	 * @return type : RpDir 返回操作是否成功
	 * @throws Exception
	 */
	public Abj1 insertByVo(Abj1 vo) throws Exception {
	    if(vo == null) return null;
	    return (Abj1)insert("ABJ1.insertByVo",(BaseVO) vo);
    }
	
    /**
	 * 配置文件中编号：(5-1)
	 * 更新数据库中对象对应的记录
	 * @param vo 对象对应到数据库中的一条记录记录
	 * @return type : RpDir 返回修改操作参数
	 * @throws Exception
	 */
	public Abj1 updateByVo(Abj1 vo) throws Exception {
		if(vo == null) return null;
		update("ABJ1.updateByVO", vo);
		return vo;
	}
	
    /**
	 * 配置文件中编号：(5-2)
	 * 更新数据库中对象对应的记录
	 * @param vo 对象对应到数据库中的一条记录记录
	 * @return type : RpDir 返回修改操作参数
	 * @throws Exception
	 */
	public Abj1 updateByVoNotNull(Abj1 vo) throws Exception {
		if(vo == null) return null;
		update("ABJ1.updateByVoNotNull", vo);
		return vo;
	}
	   
	/**
	 * 配置文件中编号：(6)
	 * 删除数据库中所有记录
	 * @return type : boolean 返回删除操作是否成功
	 * @throws Exception
	 */
	public boolean deleteAll() throws Exception {
		return getSqlSession().delete("ABJ1.deleteAll", null) > 0?true:false;
	}
	

	/**
	 * 配置文件中编号：(7)
	 * 删除数据库中与对象对应的记录
	 * @param vo 对象对应到数据库中的一条记录
	 * @return type : boolean 返回删除操作是否成功
	 * @throws Exception
	 */
	public boolean deleteByVo(Abj1 vo) throws Exception {
		if(vo == null) return false;
		int i = delete("ABJ1.deleteByVO", vo);
		return i==0?false:true;
	}
	
    /**
     * 配置文件中编号：(8)
	 * 删除数据库中与传入的主键对应的一条记录
	 * @param pkid 与数据库主键对应
	 * @return type : boolean 返回删除操作是否成功,如果传入参数为空则返回false,如果操作失败则抛出Exception异常
	 * @throws Exception
	 */
    public boolean deleteByPk(String pkid) throws Exception {
		if(pkid == null || "".equals(pkid)) return false;
		getSqlSession().delete("ABJ1.deleteByPk", pkid);
		return true;
	}
}
